


// token  
// 令牌   校验是否有效的访问者  
// token  是后端生成  加密生成  返回给前端  
// 前端 要把token 存储本地 sessionStorage  
// 每次ajax 前端要把token  返回给后端
// 后端 先要判断 token 是否有效准确  


var jwt =require("jsonwebtoken");
const { response } = require("express");

var secret = "wuhan2004-daydayup";//密钥



var data = {
    username:'liyue',
    password:"1234",
}


var createToken = function(data){
    return jwt.sign(data,secret,{expiresIn:"2h"});
}

exports.createToken = createToken;


var decodeToken = function(token){
    return new Promise(function(resolve,reject){
        jwt.verify(token,secret,(err,data)=>{
            if(err){
                reject(err);
            }else{
                // 把解密后的明文返回出去
                // console.log(data);
                resolve(data)
            }
        })
    })
}


// 检查token 是否有效
// 1. token 不存在
// 2. token 过期
// 3. token 不正确 
var checkToken = function(req,res,callback){
    var token = req.headers.token;
    if(token){
        decodeToken(token)
        .then(data=>{
            // console.log(data);
            callback(data);//解密成功的回调
        })
    }else{
        res.json({
            code:3200,
            msg:'token不存在，请立即登录',
            type:0
        })
    }

}

exports.checkToken = checkToken;